package learning.numbers.numbers;



public class MacedonianNumToWord implements IfaceNumToWord {

	/**
	 *  Array 100, 200... 
	 */
	static final String[] hunsNames = {  
     "",
     "сто",
     "двесте",
     "триста",
     "четиристотини",
     "петстотини",
     "шестотини",
     "седумстотини",
     "осумстотини",
     "деветстотини"		
	};

	/**
	 *  Array 10, 20... 
	 */
	static final String[] tensNames = {
	    "",
	    " десет",
	    " дваесет",
	    " триесет",
	    " четириесет",
	    " педест",
	    " шеесет",
	    " седумдесет",
	    " осумдесет",
	    " деведесет"
	  };

	/**
	 *  Array 1, 2... 
	 */
	static final String[] numNames = {

	    "",
	    " еден",
	    " два",
	    " три",
	    " четири",
	    " пет",
	    " шест",
	    " седум",
	    " осум",
	    " девет",
	    " десет",
	    " единаесет",
	    " дванаесет",
	    " тринаесет",
	    " четиринаесет",
	    " петнаесет",
	    " шестнаесет",
	    " седумнаесет",
	    " осумнаесет",
	    " деветнаесет"
	  };
		
	/**
	 * Converts numbers till 999.
	 * @param num  Number to be converted to text.
	 * @return string with the text of num.
	 */
	private String convertHun(int num) {		
		
		String numstring="";
		int hun = num / 100; //3rd number
		int decfin = num % 100;
		int dec = (num % 100) / 10;  //2nd number
		int fin = (num % 100) % 10;  //1st number	
		if (num == 0){ 
			numstring = hunsNames[0];
		}		
		else if (fin == 0) { 
			numstring = hunsNames[hun] + " " + tensNames[dec];
		}
		else if (decfin < 20){ 
	       numstring = hunsNames[hun] + " " + numNames[decfin];
		}else
			numstring = hunsNames[hun] + " " + tensNames[dec] + " и " + numNames[fin];
			
		return numstring;
	}
	
	/**
	 * Converts any number till 999 999 
	 * Uses convertHun several times.
	 * @param num   number to be converted.
	 * @return  string with the converted number
	 */
	public String convert(long num) {
		
		int MAX = 6;
		if (num ==0) return "zero";		
		String numstring = Long.toString(num);
		String translated = new String(); 
		int stop = MAX - numstring.length();	
		for (int i=0; i < stop ;i++)
			numstring = '0' + numstring;

		int tho = Integer.parseInt(numstring.substring(0,3));
		int hun = Integer.parseInt(numstring.substring(3,6));		
		if (tho == 1 ) { 
			translated = "илјада ";
		} else if (tho == 2) { 
			translated = "две илјади ";
		}
		else if (tho != 0) { 
			translated = convertHun(tho) + " илјади "; 
		}
		
		translated +=  convertHun(hun);
		return translated.replaceAll("^\\s+", "").replaceAll("\\b\\s{2,}\\b", " ");	//remove extra spaces 
	}
	
	
    public float comfirmChange(float total, float paid, float change) {
    	
    	if (total == paid + change) {
    		return 1;	
    	}
    	else 
    		return (total-paid);
        	
    }
	
}


